home *** CD-ROM | disk | FTP | other *** search
- /****************************/
- /* PROCESS.C */
- /* By Brian Greenstone */
- /****************************/
-
-
- /****************************/
- /* EXTERNALS */
- /****************************/
- #include <MacWindows.h>
- #include <StandardFile.h>
-
- #include <QD3D.h>
- #include <QD3DGeometry.h>
- #include <QD3DGroup.h>
- #include <QD3DMath.h>
- #include <QD3DViewer.h>
- #include <QD3DGroup.h>
-
- #include "myglobals.h"
- #include "misc.h"
- #include "process.h"
-
-
- /****************************/
- /* PROTOTYPES */
- /****************************/
-
- static void InitModelWindow(void);
- static void BuildTestModel(void);
-
-
- /****************************/
- /* CONSTANTS */
- /****************************/
-
- #define MODEL_WIND_ID 400
-
- #define MY_HITHER 10
- #define MY_YON 120
-
- /*********************/
- /* VARIABLES */
- /*********************/
-
- WindowPtr gModelWindow = nil;
- TQ3Object gModelGroup = nil;
-
- TQ3ViewerObject gViewer = nil;
-
-
- #pragma mark ========INITIALIZATION STUFF=========
-
- /******************** INIT TEST ************************/
-
- void InitTest(void)
- {
- Rect r;
- TQ3ColorARGB color;
-
- /* CREATE THE WINDOW */
-
- gModelWindow = GetNewCWindow(MODEL_WIND_ID, nil,MOVE_TO_FRONT);
- if (gModelWindow == nil)
- DoFatalAlert("\pWhere did the window go?");
- SetPort((GrafPtr)gModelWindow);
-
-
- /* CREATE THE TEST MODEL */
-
- BuildTestModel();
-
-
- /* CREATE VIEWER IN THE WINDOW */
-
- r.left = gModelWindow->portRect.left + 20;
- r.right = r.left+300;
- r.top = gModelWindow->portRect.top + 20;
- r.bottom = r.top+300;
-
- gViewer = Q3ViewerNew((CGrafPtr)gModelWindow, &r, kQ3ViewerActive|kQ3ViewerControllerVisible|
- kQ3ViewerButtonOptions|kQ3ViewerButtonCamera|
- kQ3ViewerButtonTruck|kQ3ViewerButtonOrbit|
- kQ3ViewerButtonDolly|kQ3ViewerButtonReset);
- if (gViewer == nil)
- DoFatalAlert("\pQ3ViewerNew failed!");
-
- color.a = 1.0;
- color.r = 1.0;
- color.g = .5;
- color.b = .5;
- Q3ViewerSetBackgroundColor(gViewer, &color);
-
- /* ASSIGN GEOMETRY TO VIEWER */
-
- if (Q3ViewerUseGroup(gViewer, gModelGroup))
- DoFatalAlert("\pQ3ViewerUseGroup failed!");
-
- /* DRAW IT */
-
- Q3ViewerDraw(gViewer);
-
-
- }
-
-
-
-
- /********************* BUILD TEST MODEL **************************/
-
- static void BuildTestModel(void)
- {
- TQ3TriMeshData myTriMeshData;
- TQ3TriMeshAttributeData faceAttribs;
- TQ3Object tmObj;
-
- TQ3Point3D points[3] =
- {
- 0,35,0,
- -35,-35,0,
- 35,-35,0
- };
-
- TQ3Vector3D vertexNormals[3] =
- {
- 0,0,1,
- 0,0,1,
- 0,0,1
- };
-
- TQ3Vector3D faceNormals[1] =
- {
- 0,0,1
- };
-
-
- TQ3TriMeshTriangleData triangles[1] =
- {
- 0,1,2
- };
-
-
-
-
- /* BUILD MAIN TRIMESH DATA STRUCTURE */
-
- myTriMeshData.triMeshAttributeSet = nil;
-
- myTriMeshData.numTriangles = 1;
- myTriMeshData.triangles = &triangles[0];
-
- myTriMeshData.numTriangleAttributeTypes = 1;
- myTriMeshData.triangleAttributeTypes = &faceAttribs;
-
- myTriMeshData.numEdges = 0;
- myTriMeshData.edges = nil;
- myTriMeshData.numEdgeAttributeTypes = 0;
- myTriMeshData.edgeAttributeTypes = nil;
-
- myTriMeshData.numPoints = 3;
- myTriMeshData.points = &points[0];
-
- myTriMeshData.numVertexAttributeTypes = 0;
- myTriMeshData.vertexAttributeTypes = nil;
-
-
- /* CALCULATE BOUNDING BOX */
-
- Q3BoundingBox_SetFromPoints3D(&myTriMeshData.bBox, &points[0], 3, sizeof(TQ3Point3D));
-
-
- /* CREATE FACE ATTRIBUTES */
-
- faceAttribs.attributeType = kQ3AttributeTypeNormal;
- faceAttribs.data = &faceNormals[0];
- faceAttribs.attributeUseArray = nil;
-
-
- /* MAKE THE TRIMESH GEOMETRY OBJECT */
-
- tmObj = Q3TriMesh_New(&myTriMeshData);
- if (tmObj == nil)
- DoFatalAlert("\pQ3TriMesh_New failed!");
-
- gModelGroup = Q3DisplayGroup_New();
- Q3Group_AddObject(gModelGroup, tmObj);
- Q3Object_Dispose(tmObj);
-
- }
-
-
- #pragma mark =========UPDATING============
-
-
- /*************** DO MODEL WINDOW NULL EVENT **********************/
-
- void DoModelWindowNullEvent(void)
- {
-
- }
-
-
-
- #pragma mark ======= PICT STUFF =============
-
-
- /******************** SAVE VIEWER PICT **********************/
-
- void SaveViewerPICT(void)
- {
- SFReply reply;
- Point myPoint;
- Str255 prompt = "\pSave Map View PICT As:";
- Str255 name = "\pMapView.pict";
- OSErr iErr;
- long numBytes;
- FInfo fndrInfo;
- PicHandle thePic;
- Ptr blankPtr;
- short fRefNum;
-
-
- /* GET PICT FROM VIEWER */
-
- thePic = Q3ViewerGetPict(gViewer);
-
-
- /* GET FILENAME TO SAVE TO */
-
- myPoint.h = -1;
- myPoint.v = -1;
- SFPutFile(myPoint,prompt,name,nil,&reply);
- if (!reply.good) // see if cancelled
- return;
-
-
- /* SEE IF FILE ALREADY EXISTS, THEN DELETE */
-
- iErr = GetFInfo(reply.fName,reply.vRefNum,&fndrInfo);
- if (iErr != noErr)
- iErr = FSDelete(reply.fName,reply.vRefNum);
-
-
- /* CREATE THE FILE */
-
- Create(reply.fName,reply.vRefNum,'ttxt','PICT');
- iErr = SetVol(0,reply.vRefNum);
- if (iErr != noErr) // set default volume
- DoFatalAlert("\pCant seem to set Volume?!");
-
-
- /* OPEN THE FILE */
-
- iErr = FSOpen(reply.fName,reply.vRefNum,&fRefNum);
- if (iErr != noErr)
- DoFatalAlert("\pCouldnt Open File.");
-
-
- /**********************************/
- /* WRITE PICT DATA INTO RESOURCES */
- /**********************************/
-
- blankPtr = NewPtr(512);
- numBytes = 512; // write 512 header
- FSWrite(fRefNum,&numBytes,blankPtr);
- DisposePtr(blankPtr);
- numBytes = GetHandleSize((Handle)thePic);
- FSWrite(fRefNum,&numBytes,(Ptr)*thePic); // write PICT data
- FSClose(fRefNum);
- }
-
-
-
-
-
-